package libs

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"gorm.io/gorm/schema"
	"gorm_study/Table"
)

var DB *gorm.DB

func init() {
	// 链接数据库
	username := "root"     //账号
	password := "20021003" //密码
	host := "127.0.0.1"    //数据库地址，可以是Ip或者域名
	port := 3306           //数据库端口
	Dbname := "test"       //数据库名
	timeout := "10s"       //连接超时，10秒

	// root:root@tcp(127.0.0.1:3306)/gorm?
	dsn := fmt.Sprintf(
		"%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s",
		username, password, host, port, Dbname, timeout,
	)
	//连接MYSQL, 获得DB类型实例，用于后面的数据库读写操作。
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		SkipDefaultTransaction: true,
		NamingStrategy: schema.NamingStrategy{
			TablePrefix:   "table_", // 前缀
			SingularTable: true,     // 单数表示表
			NoLowerCase:   true,     // 关闭大小写转化
		},
	})
	if err != nil {
		panic("连接数据库失败, error=" + err.Error())
	}
	// 连接成功

	DB = db // 存储到全局变量

}

func main() {
	DB = DB.Session(&gorm.Session{Logger: logger.Default.LogMode(logger.Info)})
	_ = DB.AutoMigrate(&Table.Student{}) // 创建一个表
}
